/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * PROYECTO #1: RURPLE ME
 * Fecha de Entrega: Jueves 11 de Agosto de 2011
 */

/**
 * Clase que permite el envio de Mapas y Scripts a traves de mensajes de texto. 
 * @author Jose Antonio Bagur (10275), Luis Antonio Siguenza (10297) y Emilo Jose Miranda (10411).
 */

/* SE CARGAN LOS PAQUETES A UTILIZAR EN LA CLASE */
import javax.microedition.io.*;
import javax.wireless.messaging.*;
import java.io.*;

public class SMSRurple implements Runnable {
    
    /* ATRIBUTOS DE LA CLASE SMSRURPLE */
    
    static final String PUERTO_SMS = "50000";                                   // PUERTO A TRAVÉS DEL CUAL SE ENVÍAN SMS
    protected String telefono;
    protected String mensaje;
    
    /**
     * Metodo que permite el envio de SMS determinados a un numero de telefono especifico.
     * @param telefono 
     * @param mensaje 
     */
    public void mandar(String telefono, String mensaje) {       
        setTelefono(telefono);
        setMensaje(mensaje);
        new Thread(this).start();
    }
    
    /**
     * Metodo que se encarga del envio de SMS, permite que la pantalla no se congele al realizar dicha accion.
     */
    public void run() {
        String destino = "sms://" + telefono + ":" + PUERTO_SMS;                // COMPOSICIÓN DE URL, TELÉFONO Y PUERTO
        MessageConnection conexion = null;

        try {
            conexion = (MessageConnection) Connector.open(destino);             // ABRIR LA CONEXIÓN CON EL DESTINATARIO
            TextMessage message = (TextMessage) conexion.newMessage(MessageConnection.TEXT_MESSAGE);        // CREAR INSTANCIA DE MENSAJES DE TEXTO
            message.setAddress(destino);                                        // FIJAR EL DESTINATARIO
            message.setPayloadText(mensaje);                                    // FIJAR CONTENIDO DEL MENSAJE
            conexion.send(message);                                             // ENVIAR EL MENSAJE    

        } catch (Throwable e) {
        }
        
        /* CERRAR CONEXIÓN ABIERTA CON EL DESTINATARIO */
        
        if (conexion != null) {
            try {
                conexion.close();
            } catch (IOException e) {
            }
        }
    }   
    
    /* MÉTODOS SET */
    
    /**
     * Metodo que permite definir el destinatario del SMS.
     * @param telefono 
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
    
    /**
     * Metodo que permite definir el mensaje a enviar al destinatario.
     * @param mensaje 
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
} // FIN DE LA CLASE SMSRURPLE